package main

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// 定义结构体（最终映射为一个数据表）
// 模型类
type Student struct {
	Id   int
	Name string `gorm:"type:varchar(50);"` // 字段设置
	Age  int    `gorm:"type:tinyint;default:0"`
}

// 设置映射成的表名称
func (s Student) TableName() string {
	return "student"
}

func main() {
	// parseTime=True，将数据库的时间类型转换为Go中time对象
	dsn := "root:123456@tcp(192.168.88.11:3306)/gorm_test?charset=utf8mb4&parseTime=True"
	// 创建连接
	db, err := gorm.Open(mysql.New(mysql.Config{ // mysql配置
		DSN: dsn, // 连接信息
	}), &gorm.Config{}) // gorm配置
	if err != nil {
		panic(err)
	}
	// fmt.Println(db)
	// 迁移：将结构体映射到数据库，变成一张表
	db.AutoMigrate(&Student{})
	/*
		// 通过结构体实例化对象
		s1 := Student{
			Name: "小明",
			Age:  18,
		}
		// 数据插入，提供指针类型
		err = db.Create(&s1).Error
		if err != nil {
			panic(err)
		}
	*/
	s2 := []Student{
		Student{Name: "小军", Age: 21},
		Student{Name: "小东", Age: 19},
		Student{Name: "小丽", Age: 20},
	}
	err = db.Create(&s2).Error
	if err != nil {
		panic(err)
	}
	fmt.Println("数据插入成功")
}
